package me.jessyan.mvparms.demo.mvp.model.logic;

import android.text.TextUtils;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * The author: Zhao X.H.
 * Creation time: 2018/2/6 ${time}
 */

public class TextUtil {
    public static boolean isEmpty(String str){
        if("".equals(str) || "0".equals(str) || "null".equals(str) || str == null ||  "0.0".equals(str) || "0.00".equals(str)){
            return true;
        }
        return false;
    }

    public static boolean isEmpty(Long time){
        if("".equals(time) || "0".equals(time) || "null".equals(time) || time == null){
            return true;
        }
        return false;
    }

    public static String StringBeIntString(String str){
        if("".equals(str) || "0".equals(str) || "null".equals(str) || str == null){
            return "0.00";
        }
        return str;
    }

    public static String getPriceByNumber(int number){
        String price = "0.00";
        if(number > 0) {
            price = number + ".00";
        }
        return price;
    }

    public static String getPriceByNumber(double number){
        String price = "0.00";
        DecimalFormat df = new DecimalFormat("######0.00");
        if(number > 0) {
            price = df.format(number);
        }
        return price;
    }

    public static String getPriceFromDoubleToInteger(double number){
        String price = "0.00";
        DecimalFormat df = new DecimalFormat("######0"); //四色五入转换成整数
        price = getPriceByNumber(Integer.parseInt(df.format(number)));
        return price;
    }

    public static String getPriceByNumber(String number){
        String price = "0.00";
        DecimalFormat df = new DecimalFormat("######0.00");
        double p= Double.parseDouble(number);
        if(p >= 0) {
            price = df.format(p);
            if("0.00".equals(price)){
                price = "0.00";
            }
        }

        return price;
    }

    public static String FromPhoneToPrivateNumber(String phone){
        String result = phone.substring(0, 3) + "****" + phone.substring(7, phone.length());
        return result;
    }

    public static String FromMothToAge(int age){
        String result = "0";
        result = ((int)age/12 == 0) ? (age+"月"):((int)age/12+"岁");
        return result;
    }

    public static int PriceToInteger(String amount){
        int price = 0;
        double dollor = Double.parseDouble(amount);
        price = (int)dollor;
        return price;
    }

    public static double PriceToDouble(String amount){
        double price = 0.0;
        double dollor = Double.parseDouble(amount);
        price = dollor;
        return price;
    }

    public static String transferLongToDate(String dateFormat, String millSec) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        Date date = new Date(Long.parseLong(millSec)*1000);
        return sdf.format(date);
    }

    public static boolean isUrl(String path) {
        String url =  "http://(?!(\\.jpg|\\.png)).+?(\\.jpg|\\.png|\\*)";
        if (TextUtils.isEmpty(path)) {
            return false;
        } else {
            //matches():字符串是否在给定的正则表达式匹配
            return path.matches(url);
        }
    }

    public static boolean checkContains(String result,String[] tag) {
        boolean flag = false;
        for(String t : tag){
            if(result.contains(t)){
                flag = true;
            }else{
                return false;
            }
        }
        return flag;
    }

    public static boolean isMobile(String number) {
            /*
            移动：134、135、136、137、138、139、150、151、152、157(TD)、158、159、178(新)、182、184、187、188
            联通：130、131、132、152、155、156、185、186
            电信：133、153、170、173、177、180、181、189、（1349卫通）
            总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
            */
        String num = "[1][34578]\\d{9}";//"[1]"代表第1位为数字1，"[34578]"代表第二位可以为3、4、5、7、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(number)) {
            return false;
        } else {
            //matches():字符串是否在给定的正则表达式匹配
            return number.matches(num);
        }
    }
}
